package com.example.springmvcstudy.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.HashMap;
import java.util.Map;

//标识该注解的类是一个Bean，且专门是负责web请求和响应处理的
@Controller
//还需要定义请求的路径，由哪个方法来进行处理（Servlet是@WebServlet定义路径，统一调用service）
//SpringMVC是一个类里边多个方法处理Web请求
//所以：要处理web请求的方法上必须定义路径，类上也可以[可选]
@ResponseBody//注解所在类的web方法，所有返回值，都默认转换为json字符串
public class UserController {

    //先简单实现：定义路径
    @RequestMapping("/u1")
    //定义方法：public Object 方法名(方法参数){return 返回值
    //实例方法，返回值要让他变成json字符串，方法名随便取
    public Object u1(){
        Map<String, Object> map = new HashMap<>();
        map.put("a", 123);
        map.put("b", true);
        map.put("c", "abc");
        return map;
    }

    //只支持post请求方法的
    //value是String[]，可以写""一个，也可以写{"",""}多个
    //method是RequestMethod[], 其中RequestMethod是枚举类型
    //路径是/u2,/u3都能访问，只允许post
//    @RequestMapping(value = {"/u2", "/u3"}, method = RequestMethod.POST)
    //路径是/u2,/u3都能访问，只允许post和get
//    @RequestMapping(value = {"/u2", "/u3"}, method = {RequestMethod.POST, RequestMethod.GET})
    //路径是/u2,/u3都能访问，只允许post
    @PostMapping({"/u2", "/u3"})
    public Object u2(){
        Map<String, Object> map = new HashMap<>();
        map.put("a", 123);
        map.put("b", true);
        map.put("c", "abc");
        return map;
    }
}
